package com.example.base.demo;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.EnumSet;
import java.util.concurrent.TimeUnit;

/**
 *
 *
 * 它们和普通的@Test方法一样声明，但是。
 * 另外，您必须声明至少一个将为每次调用提供参数的来源(source)。
 * @author TangDan
 * @version 1.0
 * @since 2023/3/15
 */
@SpringBootTest(useMainMethod = SpringBootTest.UseMainMethod.NEVER)
public class ParameterizedTestDemo {

    @ParameterizedTest
    // 普通类型参数
    @ValueSource(strings = { "AAA", "BBB", "CCC" })
    void palindromes(String param) {
        System.out.println(param);
    }

    @ParameterizedTest
    // 枚举类型参数
    @EnumSource(value = TimeUnit.class, names = { "DAYS", "HOURS" })
    void testWithEnumSourceInclude(TimeUnit timeUnit) {
        System.out.println(timeUnit);
    }
}
